/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package PaquetesDePrueba;

import Interfaces.ICtrlUsuarios;
import DataTypes.DataGrupo;
import DataTypes.DataUsuario;
import Hndlr.HndlrGrupo;
import java.io.IOException;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import static org.junit.Assert.*;
import Controladores.*;

/**
 *
 * @author Sebas
 */
public class CtrlModifMiembrosGrupoTest {
    
    public CtrlModifMiembrosGrupoTest() {
    }

    @BeforeClass
    public static void setUpClass() throws Exception {
        
        ICtrlUsuarios ctrlUsr = new CtrlUsuarios();
        
        DataUsuario dUsr = new DataUsuario();
        
        String claveCreador = "correoCreador@usr.com";
        dUsr.setCorreo(claveCreador);
        ctrlUsr.altaUsuario(dUsr);
        
        String nomGrupo = "nomGrupo";
        
        CtrlCrearGrupo ctrlGrupo = new CtrlCrearGrupo();
        DataGrupo dg = new DataGrupo();
        dg.setNombre(nomGrupo);
        dg.setCreador(claveCreador);
        ctrlGrupo.crearGrupo(dg);
        
        
    }

    @AfterClass
    public static void tearDownClass() throws Exception {
    }
    
    @Before
    public void setUp() {
    }
    
    @After
    public void tearDown() {
    }

    /**
     * Test of agregarMiembroGrupo method, of class CtrlModifMiembrosGrupo.
     */
    @Test
    public void testAgregarMiembroGrupo() throws Exception {
        
        System.out.println("agregarMiembroGrupo");
        HndlrGrupo hGrupo = HndlrGrupo.getInstance();
        
//        setUpClass();
        
        assertEquals(hGrupo.obtenerGrupo("nomGrupo").getCantParticipantes(), 1);
        
        CtrlModifMiembrosGrupo instance = new CtrlModifMiembrosGrupo();
        ICtrlUsuarios ctrlUsr = new CtrlUsuarios();
        String claveUsuario = "correo@usr.com"+1;
        DataUsuario dUsr = new DataUsuario();
        
        for (int i = 1;i<10;i++){
            
            claveUsuario = "correo@usr.com"+i;
            
            dUsr.setCorreo(claveUsuario);
            ctrlUsr.altaUsuario(dUsr);

            instance.agregarMiembroGrupo("nomGrupo", "correo@usr.com"+i);

            assertTrue(hGrupo.PerteneceMiembroAgrupo("correo@usr.com"+i, "nomGrupo"));
            
        }
    }

    /**
     * Test of listarGrupos method, of class CtrlModifMiembrosGrupo.
     */
    @Test
    public void testListarGrupos() {
        System.out.println("listarGrupos");
        CtrlModifMiembrosGrupo instance = new CtrlModifMiembrosGrupo();
        int expResult = 1;
        int result = instance.listarGrupos().size();
        assertEquals(expResult, result);
    }

    /**
     * Test of PerteneceMiembroAgrupo method, of class CtrlModifMiembrosGrupo.
     */
    @Test
    public void testPerteneceMiembroAgrupo() {
        System.out.println("PerteneceMiembroAgrupo");
        String mailUsr = "correo@usr.com"+1;
        String nomGrupo = "nomGrupo";
        CtrlModifMiembrosGrupo instance = new CtrlModifMiembrosGrupo();
        assertTrue(instance.PerteneceMiembroAgrupo(mailUsr, nomGrupo));
    }

    /**
     * Test of listarDusuariosGrupo method, of class CtrlModifMiembrosGrupo.
     */
    @Test
    public void testListarDusuariosGrupo() throws IOException {
        System.out.println("listarDusuariosGrupo");
        
        CtrlModifMiembrosGrupo instance = new CtrlModifMiembrosGrupo();
        
        HndlrGrupo hGrupo = HndlrGrupo.getInstance();
        
        int cantMiembros = instance.listarDusuariosGrupo("nomGrupo").size();
        int cantMiembrosExp = hGrupo.obtenerGrupo("nomGrupo").getCantParticipantes();
        
        assertEquals(cantMiembrosExp, cantMiembros);
        
        
    }
}
